// $ANTLR 3.4 C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g 2012-11-09 14:56:59

package PL.prac8;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class CParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ACORCHETE", "ALLAVE", "AND", "APARENTESIS", "ASTERISCO", "BARRA", "BARRAS", "BLANCO", "BREAK", "CADENA", "CARACTER", "CCORCHETE", "CHAR", "CLLAVE", "COMA", "COMENTARIO", "COMILLA", "COMILLAS", "COMPARADORES", "CPARENTESIS", "DIGITO", "DOSPUNTOS", "ESPACIO", "FLOAT", "FOR", "IDENT", "IF", "IGUAL", "INT", "INTERROGANTE", "LETRA", "LINEA_COMENTARIO", "MAIN", "MAS", "MENOS", "NOT", "NUEVA_LINEA", "NUMERO", "OR", "SEPARADOR", "TIPO", "VOID", "WHILE"
    };

    public static final int EOF=-1;
    public static final int ACORCHETE=4;
    public static final int ALLAVE=5;
    public static final int AND=6;
    public static final int APARENTESIS=7;
    public static final int ASTERISCO=8;
    public static final int BARRA=9;
    public static final int BARRAS=10;
    public static final int BLANCO=11;
    public static final int BREAK=12;
    public static final int CADENA=13;
    public static final int CARACTER=14;
    public static final int CCORCHETE=15;
    public static final int CHAR=16;
    public static final int CLLAVE=17;
    public static final int COMA=18;
    public static final int COMENTARIO=19;
    public static final int COMILLA=20;
    public static final int COMILLAS=21;
    public static final int COMPARADORES=22;
    public static final int CPARENTESIS=23;
    public static final int DIGITO=24;
    public static final int DOSPUNTOS=25;
    public static final int ESPACIO=26;
    public static final int FLOAT=27;
    public static final int FOR=28;
    public static final int IDENT=29;
    public static final int IF=30;
    public static final int IGUAL=31;
    public static final int INT=32;
    public static final int INTERROGANTE=33;
    public static final int LETRA=34;
    public static final int LINEA_COMENTARIO=35;
    public static final int MAIN=36;
    public static final int MAS=37;
    public static final int MENOS=38;
    public static final int NOT=39;
    public static final int NUEVA_LINEA=40;
    public static final int NUMERO=41;
    public static final int OR=42;
    public static final int SEPARADOR=43;
    public static final int TIPO=44;
    public static final int VOID=45;
    public static final int WHILE=46;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public CParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public CParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return CParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g"; }

    int nivelcuerpo = 0;


    // $ANTLR start "entrada"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:19:1: entrada : funcion EOF ;
    public final void entrada() throws RecognitionException {
        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:19:8: ( funcion EOF )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:19:10: funcion EOF
            {
            pushFollow(FOLLOW_funcion_in_entrada53);
            funcion();

            state._fsp--;


            match(input,EOF,FOLLOW_EOF_in_entrada55); 

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "entrada"



    // $ANTLR start "variable"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:23:1: variable returns [String salida = \"\"] : a= TIPO (b= ASTERISCO )? c= IDENT ( ACORCHETE CCORCHETE )? ;
    public final String variable() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;
        Token c=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:23:38: (a= TIPO (b= ASTERISCO )? c= IDENT ( ACORCHETE CCORCHETE )? )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:23:40: a= TIPO (b= ASTERISCO )? c= IDENT ( ACORCHETE CCORCHETE )?
            {
            a=(Token)match(input,TIPO,FOLLOW_TIPO_in_variable70); 

            salida = a.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:23:70: (b= ASTERISCO )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==ASTERISCO) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:23:71: b= ASTERISCO
                    {
                    b=(Token)match(input,ASTERISCO,FOLLOW_ASTERISCO_in_variable76); 

                    salida = salida + b.getText();

                    }
                    break;

            }


            c=(Token)match(input,IDENT,FOLLOW_IDENT_in_variable124); 

            salida = salida + " "+ c.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:24:86: ( ACORCHETE CCORCHETE )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==ACORCHETE) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:24:87: ACORCHETE CCORCHETE
                    {
                    match(input,ACORCHETE,FOLLOW_ACORCHETE_in_variable129); 

                    match(input,CCORCHETE,FOLLOW_CCORCHETE_in_variable131); 

                    salida = salida + "[]";

                    }
                    break;

            }


            salida = salida + " ";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "variable"



    // $ANTLR start "funcion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:29:1: funcion returns [String salida = \"\"] : a= cabecera b= body ;
    public final String funcion() throws RecognitionException {
        String salida =  "";


        String a =null;

        String b =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:29:37: (a= cabecera b= body )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:29:39: a= cabecera b= body
            {
            pushFollow(FOLLOW_cabecera_in_funcion191);
            a=cabecera();

            state._fsp--;


            pushFollow(FOLLOW_body_in_funcion195);
            b=body();

            state._fsp--;


             salida = a+b; System.out.print(salida);

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "funcion"



    // $ANTLR start "cabecera"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:32:1: cabecera returns [String salida = \"\"] : a= ( VOID | TIPO ) b= ( IDENT | MAIN ) APARENTESIS c= llamada_variable CPARENTESIS ;
    public final String cabecera() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;
        String c =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:32:38: (a= ( VOID | TIPO ) b= ( IDENT | MAIN ) APARENTESIS c= llamada_variable CPARENTESIS )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:32:40: a= ( VOID | TIPO ) b= ( IDENT | MAIN ) APARENTESIS c= llamada_variable CPARENTESIS
            {
            a=(Token)input.LT(1);

            if ( (input.LA(1) >= TIPO && input.LA(1) <= VOID) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = a.getText() + " ";

            b=(Token)input.LT(1);

            if ( input.LA(1)==IDENT||input.LA(1)==MAIN ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = salida + b.getText()+ " ";

            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_cabecera263); 

            pushFollow(FOLLOW_llamada_variable_in_cabecera267);
            c=llamada_variable();

            state._fsp--;


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_cabecera269); 

            salida = salida + "("+c + ") ";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "cabecera"



    // $ANTLR start "llamada_variable"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:1: llamada_variable returns [String salida = \"\"] : ( VOID | (a= variable ( COMA b= variable )* ) ) ;
    public final String llamada_variable() throws RecognitionException {
        String salida =  "";


        String a =null;

        String b =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:46: ( ( VOID | (a= variable ( COMA b= variable )* ) ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:48: ( VOID | (a= variable ( COMA b= variable )* ) )
            {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:48: ( VOID | (a= variable ( COMA b= variable )* ) )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==VOID) ) {
                alt4=1;
            }
            else if ( (LA4_0==TIPO) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;

            }
            switch (alt4) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:49: VOID
                    {
                    match(input,VOID,FOLLOW_VOID_in_llamada_variable284); 

                    salida = "void";

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:74: (a= variable ( COMA b= variable )* )
                    {
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:74: (a= variable ( COMA b= variable )* )
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:36:75: a= variable ( COMA b= variable )*
                    {
                    pushFollow(FOLLOW_variable_in_llamada_variable292);
                    a=variable();

                    state._fsp--;


                    salida = a;

                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:37:48: ( COMA b= variable )*
                    loop3:
                    do {
                        int alt3=2;
                        int LA3_0 = input.LA(1);

                        if ( (LA3_0==COMA) ) {
                            alt3=1;
                        }


                        switch (alt3) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:37:49: COMA b= variable
                    	    {
                    	    match(input,COMA,FOLLOW_COMA_in_llamada_variable344); 

                    	    pushFollow(FOLLOW_variable_in_llamada_variable348);
                    	    b=variable();

                    	    state._fsp--;


                    	    salida = salida + ", "+b;

                    	    }
                    	    break;

                    	default :
                    	    break loop3;
                        }
                    } while (true);


                    }


                    }
                    break;

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "llamada_variable"



    // $ANTLR start "body"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:40:1: body returns [String salida = \"\"] : ALLAVE (c= cuerpo )* CLLAVE ;
    public final String body() throws RecognitionException {
        String salida =  "";


        String c =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:40:34: ( ALLAVE (c= cuerpo )* CLLAVE )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:40:36: ALLAVE (c= cuerpo )* CLLAVE
            {
            match(input,ALLAVE,FOLLOW_ALLAVE_in_body365); 

            salida = "{ \n";

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:40:62: (c= cuerpo )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==BREAK||(LA5_0 >= FOR && LA5_0 <= IF)||LA5_0==TIPO||LA5_0==WHILE) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:40:63: c= cuerpo
            	    {
            	    pushFollow(FOLLOW_cuerpo_in_body372);
            	    c=cuerpo();

            	    state._fsp--;


            	    salida = salida + c;

            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            match(input,CLLAVE,FOLLOW_CLLAVE_in_body378); 

            salida = salida+ "\n}";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "body"



    // $ANTLR start "cuerpo"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:45:1: cuerpo returns [String salida = \"\"] : (a= sentencia |b= asignacion |c= definicion |d= llamada_funcion | BREAK SEPARADOR ) ;
    public final String cuerpo() throws RecognitionException {
        String salida =  "";


        String a =null;

        String b =null;

        String c =null;

        String d =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:45:36: ( (a= sentencia |b= asignacion |c= definicion |d= llamada_funcion | BREAK SEPARADOR ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:45:38: (a= sentencia |b= asignacion |c= definicion |d= llamada_funcion | BREAK SEPARADOR )
            {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:45:38: (a= sentencia |b= asignacion |c= definicion |d= llamada_funcion | BREAK SEPARADOR )
            int alt6=5;
            switch ( input.LA(1) ) {
            case FOR:
            case IF:
            case WHILE:
                {
                alt6=1;
                }
                break;
            case IDENT:
                {
                int LA6_2 = input.LA(2);

                if ( (LA6_2==IGUAL) ) {
                    alt6=2;
                }
                else if ( (LA6_2==APARENTESIS) ) {
                    alt6=4;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 6, 2, input);

                    throw nvae;

                }
                }
                break;
            case TIPO:
                {
                alt6=3;
                }
                break;
            case BREAK:
                {
                alt6=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;

            }

            switch (alt6) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:45:40: a= sentencia
                    {
                    pushFollow(FOLLOW_sentencia_in_cuerpo398);
                    a=sentencia();

                    state._fsp--;


                    salida = a;

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:46:39: b= asignacion
                    {
                    pushFollow(FOLLOW_asignacion_in_cuerpo442);
                    b=asignacion();

                    state._fsp--;


                    salida = b;

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:47:39: c= definicion
                    {
                    pushFollow(FOLLOW_definicion_in_cuerpo486);
                    c=definicion();

                    state._fsp--;


                    salida = c;

                    }
                    break;
                case 4 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:48:38: d= llamada_funcion
                    {
                    pushFollow(FOLLOW_llamada_funcion_in_cuerpo530);
                    d=llamada_funcion();

                    state._fsp--;


                    salida = d;

                    }
                    break;
                case 5 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:49:38: BREAK SEPARADOR
                    {
                    match(input,BREAK,FOLLOW_BREAK_in_cuerpo571); 

                    match(input,SEPARADOR,FOLLOW_SEPARADOR_in_cuerpo573); 

                    salida = "break; \n";

                    }
                    break;

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "cuerpo"



    // $ANTLR start "sentencia"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:1: sentencia returns [String salida = \"\"] : (a= bucle |b= condicion |c= buclefor ) b= cuerposentencia ;
    public final String sentencia() throws RecognitionException {
        String salida =  "";


        String a =null;

        String b =null;

        String c =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:39: ( (a= bucle |b= condicion |c= buclefor ) b= cuerposentencia )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:41: (a= bucle |b= condicion |c= buclefor ) b= cuerposentencia
            {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:41: (a= bucle |b= condicion |c= buclefor )
            int alt7=3;
            switch ( input.LA(1) ) {
            case WHILE:
                {
                alt7=1;
                }
                break;
            case IF:
                {
                alt7=2;
                }
                break;
            case FOR:
                {
                alt7=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;

            }

            switch (alt7) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:42: a= bucle
                    {
                    pushFollow(FOLLOW_bucle_in_sentencia595);
                    a=bucle();

                    state._fsp--;


                    salida= a;

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:65: b= condicion
                    {
                    pushFollow(FOLLOW_condicion_in_sentencia602);
                    b=condicion();

                    state._fsp--;


                    salida = b;

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:54:91: c= buclefor
                    {
                    pushFollow(FOLLOW_buclefor_in_sentencia609);
                    c=buclefor();

                    state._fsp--;


                    salida = c;

                    }
                    break;

            }


            pushFollow(FOLLOW_cuerposentencia_in_sentencia615);
            b=cuerposentencia();

            state._fsp--;


            salida = salida + b;

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "sentencia"



    // $ANTLR start "bucle"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:57:1: bucle returns [String salida = \"\"] : WHILE a= comparacion ;
    public final String bucle() throws RecognitionException {
        String salida =  "";


        String a =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:57:35: ( WHILE a= comparacion )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:57:37: WHILE a= comparacion
            {
            match(input,WHILE,FOLLOW_WHILE_in_bucle629); 

            salida = "while ";

            pushFollow(FOLLOW_comparacion_in_bucle635);
            a=comparacion();

            state._fsp--;


            salida = salida + a;

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "bucle"



    // $ANTLR start "comparacion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:61:1: comparacion returns [String salida = \"\"] : APARENTESIS a= reglas ( ( AND | OR ) b= reglas )* CPARENTESIS ;
    public final String comparacion() throws RecognitionException {
        String salida =  "";


        String a =null;

        String b =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:61:41: ( APARENTESIS a= reglas ( ( AND | OR ) b= reglas )* CPARENTESIS )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:61:43: APARENTESIS a= reglas ( ( AND | OR ) b= reglas )* CPARENTESIS
            {
            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_comparacion686); 

            pushFollow(FOLLOW_reglas_in_comparacion691);
            a=reglas();

            state._fsp--;


            salida = "( " + a ;

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:62:43: ( ( AND | OR ) b= reglas )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==AND||LA9_0==OR) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:62:44: ( AND | OR ) b= reglas
            	    {
            	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:62:44: ( AND | OR )
            	    int alt8=2;
            	    int LA8_0 = input.LA(1);

            	    if ( (LA8_0==AND) ) {
            	        alt8=1;
            	    }
            	    else if ( (LA8_0==OR) ) {
            	        alt8=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 8, 0, input);

            	        throw nvae;

            	    }
            	    switch (alt8) {
            	        case 1 :
            	            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:62:45: AND
            	            {
            	            match(input,AND,FOLLOW_AND_in_comparacion739); 

            	            salida = salida + " && ";

            	            }
            	            break;
            	        case 2 :
            	            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:62:79: OR
            	            {
            	            match(input,OR,FOLLOW_OR_in_comparacion745); 

            	            salida = salida + " || ";

            	            }
            	            break;

            	    }


            	    pushFollow(FOLLOW_reglas_in_comparacion795);
            	    b=reglas();

            	    state._fsp--;


            	    salida = salida + b;

            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_comparacion801); 

            salida = salida +" )";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "comparacion"



    // $ANTLR start "reglas"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:67:1: reglas returns [String salida = \"\"] : ( (a= subregla b= COMPARADORES c= subregla ) | ( (d= NOT )? e= IDENT ) |f= cond_aritmetico );
    public final String reglas() throws RecognitionException {
        String salida =  "";


        Token b=null;
        Token d=null;
        Token e=null;
        String a =null;

        String c =null;

        String f =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:67:36: ( (a= subregla b= COMPARADORES c= subregla ) | ( (d= NOT )? e= IDENT ) |f= cond_aritmetico )
            int alt11=3;
            switch ( input.LA(1) ) {
            case IDENT:
                {
                switch ( input.LA(2) ) {
                case COMPARADORES:
                    {
                    int LA11_4 = input.LA(3);

                    if ( (LA11_4==NUMERO) ) {
                        int LA11_5 = input.LA(4);

                        if ( (LA11_5==INTERROGANTE) ) {
                            alt11=3;
                        }
                        else if ( (LA11_5==AND||(LA11_5 >= ASTERISCO && LA11_5 <= BARRA)||LA11_5==CPARENTESIS||(LA11_5 >= MAS && LA11_5 <= MENOS)||LA11_5==OR) ) {
                            alt11=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 11, 5, input);

                            throw nvae;

                        }
                    }
                    else if ( (LA11_4==IDENT) ) {
                        alt11=1;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 11, 4, input);

                        throw nvae;

                    }
                    }
                    break;
                case ASTERISCO:
                case BARRA:
                case MAS:
                case MENOS:
                    {
                    alt11=1;
                    }
                    break;
                case AND:
                case CPARENTESIS:
                case OR:
                    {
                    alt11=2;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 11, 1, input);

                    throw nvae;

                }

                }
                break;
            case NUMERO:
                {
                alt11=1;
                }
                break;
            case NOT:
                {
                alt11=2;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;

            }

            switch (alt11) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:67:38: (a= subregla b= COMPARADORES c= subregla )
                    {
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:67:38: (a= subregla b= COMPARADORES c= subregla )
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:67:39: a= subregla b= COMPARADORES c= subregla
                    {
                    pushFollow(FOLLOW_subregla_in_reglas819);
                    a=subregla();

                    state._fsp--;


                    b=(Token)match(input,COMPARADORES,FOLLOW_COMPARADORES_in_reglas823); 

                    pushFollow(FOLLOW_subregla_in_reglas827);
                    c=subregla();

                    state._fsp--;


                    salida = a+ " " + b.getText() + " " + c;

                    }


                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:68:40: ( (d= NOT )? e= IDENT )
                    {
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:68:40: ( (d= NOT )? e= IDENT )
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:68:41: (d= NOT )? e= IDENT
                    {
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:68:41: (d= NOT )?
                    int alt10=2;
                    int LA10_0 = input.LA(1);

                    if ( (LA10_0==NOT) ) {
                        alt10=1;
                    }
                    switch (alt10) {
                        case 1 :
                            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:68:42: d= NOT
                            {
                            d=(Token)match(input,NOT,FOLLOW_NOT_in_reglas876); 

                            salida = "!";

                            }
                            break;

                    }


                    e=(Token)match(input,IDENT,FOLLOW_IDENT_in_reglas884); 

                    salida = salida + e.getText();

                    }


                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:69:39: f= cond_aritmetico
                    {
                    pushFollow(FOLLOW_cond_aritmetico_in_reglas932);
                    f=cond_aritmetico();

                    state._fsp--;


                    salida = f;

                    }
                    break;

            }
        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "reglas"



    // $ANTLR start "subregla"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:72:1: subregla returns [String salida = \"\"] : (a= IDENT |a= NUMERO |b= operacion ) ;
    public final String subregla() throws RecognitionException {
        String salida =  "";


        Token a=null;
        String b =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:72:38: ( (a= IDENT |a= NUMERO |b= operacion ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:72:40: (a= IDENT |a= NUMERO |b= operacion )
            {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:72:40: (a= IDENT |a= NUMERO |b= operacion )
            int alt12=3;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==IDENT) ) {
                int LA12_1 = input.LA(2);

                if ( (LA12_1==AND||(LA12_1 >= COMPARADORES && LA12_1 <= CPARENTESIS)||LA12_1==OR) ) {
                    alt12=1;
                }
                else if ( ((LA12_1 >= ASTERISCO && LA12_1 <= BARRA)||(LA12_1 >= MAS && LA12_1 <= MENOS)) ) {
                    alt12=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 12, 1, input);

                    throw nvae;

                }
            }
            else if ( (LA12_0==NUMERO) ) {
                int LA12_2 = input.LA(2);

                if ( (LA12_2==AND||(LA12_2 >= COMPARADORES && LA12_2 <= CPARENTESIS)||LA12_2==OR) ) {
                    alt12=2;
                }
                else if ( ((LA12_2 >= ASTERISCO && LA12_2 <= BARRA)||(LA12_2 >= MAS && LA12_2 <= MENOS)) ) {
                    alt12=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 12, 2, input);

                    throw nvae;

                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;

            }
            switch (alt12) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:72:41: a= IDENT
                    {
                    a=(Token)match(input,IDENT,FOLLOW_IDENT_in_subregla986); 

                    salida = a.getText();

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:73:41: a= NUMERO
                    {
                    a=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_subregla1032); 

                    salida = a.getText();

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:74:40: b= operacion
                    {
                    pushFollow(FOLLOW_operacion_in_subregla1077);
                    b=operacion();

                    state._fsp--;


                    salida = b;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "subregla"



    // $ANTLR start "cond_aritmetico"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:77:1: cond_aritmetico returns [String salida = \"\"] : a= IDENT b= COMPARADORES c= NUMERO INTERROGANTE d= NUMERO DOSPUNTOS e= NUMERO ;
    public final String cond_aritmetico() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;
        Token c=null;
        Token d=null;
        Token e=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:77:45: (a= IDENT b= COMPARADORES c= NUMERO INTERROGANTE d= NUMERO DOSPUNTOS e= NUMERO )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:77:47: a= IDENT b= COMPARADORES c= NUMERO INTERROGANTE d= NUMERO DOSPUNTOS e= NUMERO
            {
            a=(Token)match(input,IDENT,FOLLOW_IDENT_in_cond_aritmetico1132); 

            b=(Token)match(input,COMPARADORES,FOLLOW_COMPARADORES_in_cond_aritmetico1136); 

            c=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_cond_aritmetico1140); 

            match(input,INTERROGANTE,FOLLOW_INTERROGANTE_in_cond_aritmetico1142); 

            d=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_cond_aritmetico1146); 

            match(input,DOSPUNTOS,FOLLOW_DOSPUNTOS_in_cond_aritmetico1148); 

            e=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_cond_aritmetico1152); 

            salida = a.getText()+ " " + b.getText() + " "+ c.getText()+ "?" + " " + d.getText()+ ": "+ e.getText();

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "cond_aritmetico"



    // $ANTLR start "cuerposentencia"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:1: cuerposentencia returns [String salida = \"\"] : ( ALLAVE (b= cuerpo )+ CLLAVE |c= cuerpo ) ;
    public final String cuerposentencia() throws RecognitionException {
        String salida =  "";


        String b =null;

        String c =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:45: ( ( ALLAVE (b= cuerpo )+ CLLAVE |c= cuerpo ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:47: ( ALLAVE (b= cuerpo )+ CLLAVE |c= cuerpo )
            {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:47: ( ALLAVE (b= cuerpo )+ CLLAVE |c= cuerpo )
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==ALLAVE) ) {
                alt14=1;
            }
            else if ( (LA14_0==BREAK||(LA14_0 >= FOR && LA14_0 <= IF)||LA14_0==TIPO||LA14_0==WHILE) ) {
                alt14=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;

            }
            switch (alt14) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:48: ALLAVE (b= cuerpo )+ CLLAVE
                    {
                    match(input,ALLAVE,FOLLOW_ALLAVE_in_cuerposentencia1200); 

                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:55: (b= cuerpo )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==BREAK||(LA13_0 >= FOR && LA13_0 <= IF)||LA13_0==TIPO||LA13_0==WHILE) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:56: b= cuerpo
                    	    {
                    	    pushFollow(FOLLOW_cuerpo_in_cuerposentencia1205);
                    	    b=cuerpo();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    match(input,CLLAVE,FOLLOW_CLLAVE_in_cuerposentencia1209); 

                    salida = "{ \n"+ b + "}";

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:81:103: c= cuerpo
                    {
                    pushFollow(FOLLOW_cuerpo_in_cuerposentencia1216);
                    c=cuerpo();

                    state._fsp--;


                    salida = c;

                    }
                    break;

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "cuerposentencia"



    // $ANTLR start "operacion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:84:1: operacion returns [String salida = \"\"] : a= ( IDENT | NUMERO ) (b= ( MAS | MENOS | ASTERISCO | BARRA ) c= ( IDENT | NUMERO ) ) ;
    public final String operacion() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;
        Token c=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:84:39: (a= ( IDENT | NUMERO ) (b= ( MAS | MENOS | ASTERISCO | BARRA ) c= ( IDENT | NUMERO ) ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:84:41: a= ( IDENT | NUMERO ) (b= ( MAS | MENOS | ASTERISCO | BARRA ) c= ( IDENT | NUMERO ) )
            {
            a=(Token)input.LT(1);

            if ( input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = a.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:85:39: (b= ( MAS | MENOS | ASTERISCO | BARRA ) c= ( IDENT | NUMERO ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:85:40: b= ( MAS | MENOS | ASTERISCO | BARRA ) c= ( IDENT | NUMERO )
            {
            b=(Token)input.LT(1);

            if ( (input.LA(1) >= ASTERISCO && input.LA(1) <= BARRA)||(input.LA(1) >= MAS && input.LA(1) <= MENOS) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = salida + " "+ b.getText();

            c=(Token)input.LT(1);

            if ( input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = salida + " "+ c.getText();

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "operacion"



    // $ANTLR start "condicion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:88:1: condicion returns [String salida = \"\"] : IF a= comparacion ;
    public final String condicion() throws RecognitionException {
        String salida =  "";


        String a =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:88:39: ( IF a= comparacion )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:88:41: IF a= comparacion
            {
            match(input,IF,FOLLOW_IF_in_condicion1395); 

            pushFollow(FOLLOW_comparacion_in_condicion1399);
            a=comparacion();

            state._fsp--;


            salida = "if " + a;

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "condicion"



    // $ANTLR start "buclefor"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:90:1: buclefor returns [String salida = \"\"] : FOR a= comparacion_for ;
    public final String buclefor() throws RecognitionException {
        String salida =  "";


        String a =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:90:38: ( FOR a= comparacion_for )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:90:40: FOR a= comparacion_for
            {
            match(input,FOR,FOLLOW_FOR_in_buclefor1412); 

            pushFollow(FOLLOW_comparacion_for_in_buclefor1416);
            a=comparacion_for();

            state._fsp--;


            salida = "for " + a;

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "buclefor"



    // $ANTLR start "comparacion_for"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:92:1: comparacion_for returns [String salida = \"\"] : APARENTESIS (b= comparacion1 )? SEPARADOR (c= comparacion2 )? SEPARADOR (d= comparacion3 )? CPARENTESIS ;
    public final String comparacion_for() throws RecognitionException {
        String salida =  "";


        String b =null;

        String c =null;

        String d =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:92:45: ( APARENTESIS (b= comparacion1 )? SEPARADOR (c= comparacion2 )? SEPARADOR (d= comparacion3 )? CPARENTESIS )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:92:47: APARENTESIS (b= comparacion1 )? SEPARADOR (c= comparacion2 )? SEPARADOR (d= comparacion3 )? CPARENTESIS
            {
            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_comparacion_for1429); 

            salida = "( ";

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:93:46: (b= comparacion1 )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==IDENT||LA15_0==TIPO) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:93:47: b= comparacion1
                    {
                    pushFollow(FOLLOW_comparacion1_in_comparacion_for1482);
                    b=comparacion1();

                    state._fsp--;


                    salida = salida + b;

                    }
                    break;

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_comparacion_for1487); 

            salida = salida + "; \n";

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:94:47: (c= comparacion2 )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==IDENT) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:94:48: c= comparacion2
                    {
                    pushFollow(FOLLOW_comparacion2_in_comparacion_for1540);
                    c=comparacion2();

                    state._fsp--;


                    salida = salida + c;

                    }
                    break;

            }


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_comparacion_for1545); 

            salida = salida + "; \n";

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:95:47: (d= comparacion3 )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==IDENT) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:95:48: d= comparacion3
                    {
                    pushFollow(FOLLOW_comparacion3_in_comparacion_for1598);
                    d=comparacion3();

                    state._fsp--;


                    salida = salida + d;

                    }
                    break;

            }


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_comparacion_for1604); 

            salida = salida + "; \n";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "comparacion_for"



    // $ANTLR start "comparacion1"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:97:1: comparacion1 returns [String salida = \"\"] : (a= TIPO )? g= IDENT IGUAL c= NUMERO ;
    public final String comparacion1() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token g=null;
        Token c=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:97:42: ( (a= TIPO )? g= IDENT IGUAL c= NUMERO )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:97:44: (a= TIPO )? g= IDENT IGUAL c= NUMERO
            {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:97:44: (a= TIPO )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==TIPO) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:97:45: a= TIPO
                    {
                    a=(Token)match(input,TIPO,FOLLOW_TIPO_in_comparacion11620); 

                    salida = a.getText()+ " ";

                    }
                    break;

            }


            g=(Token)match(input,IDENT,FOLLOW_IDENT_in_comparacion11628); 

            salida = salida + g.getText() + " ";

            match(input,IGUAL,FOLLOW_IGUAL_in_comparacion11675); 

            salida = salida + "= ";

            c=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_comparacion11681); 

            salida = salida + c.getText();

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "comparacion1"



    // $ANTLR start "comparacion2"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:100:1: comparacion2 returns [String salida = \"\"] : a= IDENT b= COMPARADORES c= ( NUMERO | IDENT ) ;
    public final String comparacion2() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;
        Token c=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:100:42: (a= IDENT b= COMPARADORES c= ( NUMERO | IDENT ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:100:44: a= IDENT b= COMPARADORES c= ( NUMERO | IDENT )
            {
            a=(Token)match(input,IDENT,FOLLOW_IDENT_in_comparacion21696); 

            b=(Token)match(input,COMPARADORES,FOLLOW_COMPARADORES_in_comparacion21701); 

            c=(Token)input.LT(1);

            if ( input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = a.getText()+ " " + b.getText()+ " " + c.getText();

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "comparacion2"



    // $ANTLR start "comparacion3"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:103:1: comparacion3 returns [String salida = \"\"] : a= IDENT ( MAS MAS | MENOS MENOS ) ;
    public final String comparacion3() throws RecognitionException {
        String salida =  "";


        Token a=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:103:42: (a= IDENT ( MAS MAS | MENOS MENOS ) )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:103:44: a= IDENT ( MAS MAS | MENOS MENOS )
            {
            a=(Token)match(input,IDENT,FOLLOW_IDENT_in_comparacion31767); 

            salida = a.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:104:43: ( MAS MAS | MENOS MENOS )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==MAS) ) {
                alt19=1;
            }
            else if ( (LA19_0==MENOS) ) {
                alt19=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;

            }
            switch (alt19) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:104:44: MAS MAS
                    {
                    match(input,MAS,FOLLOW_MAS_in_comparacion31814); 

                    match(input,MAS,FOLLOW_MAS_in_comparacion31816); 

                    salida = salida + "++";

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:104:78: MENOS MENOS
                    {
                    match(input,MENOS,FOLLOW_MENOS_in_comparacion31820); 

                    match(input,MENOS,FOLLOW_MENOS_in_comparacion31822); 

                    salida = salida + "--";

                    }
                    break;

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "comparacion3"



    // $ANTLR start "asignacion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:106:1: asignacion returns [String salida = \"\"] : a= IDENT IGUAL c= ( IDENT | NUMERO | CADENA | CARACTER ) (d= ( MAS | MENOS | ASTERISCO | BARRA ) e= ( IDENT | NUMERO | CADENA | CARACTER ) )* SEPARADOR ;
    public final String asignacion() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token c=null;
        Token d=null;
        Token e=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:106:40: (a= IDENT IGUAL c= ( IDENT | NUMERO | CADENA | CARACTER ) (d= ( MAS | MENOS | ASTERISCO | BARRA ) e= ( IDENT | NUMERO | CADENA | CARACTER ) )* SEPARADOR )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:106:42: a= IDENT IGUAL c= ( IDENT | NUMERO | CADENA | CARACTER ) (d= ( MAS | MENOS | ASTERISCO | BARRA ) e= ( IDENT | NUMERO | CADENA | CARACTER ) )* SEPARADOR
            {
            a=(Token)match(input,IDENT,FOLLOW_IDENT_in_asignacion1837); 

            match(input,IGUAL,FOLLOW_IGUAL_in_asignacion1839); 

            c=(Token)input.LT(1);

            if ( (input.LA(1) >= CADENA && input.LA(1) <= CARACTER)||input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            salida = a.getText() + " = "+c.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:107:41: (d= ( MAS | MENOS | ASTERISCO | BARRA ) e= ( IDENT | NUMERO | CADENA | CARACTER ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( ((LA20_0 >= ASTERISCO && LA20_0 <= BARRA)||(LA20_0 >= MAS && LA20_0 <= MENOS)) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:107:42: d= ( MAS | MENOS | ASTERISCO | BARRA ) e= ( IDENT | NUMERO | CADENA | CARACTER )
            	    {
            	    d=(Token)input.LT(1);

            	    if ( (input.LA(1) >= ASTERISCO && input.LA(1) <= BARRA)||(input.LA(1) >= MAS && input.LA(1) <= MENOS) ) {
            	        input.consume();
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    e=(Token)input.LT(1);

            	    if ( (input.LA(1) >= CADENA && input.LA(1) <= CARACTER)||input.LA(1)==IDENT||input.LA(1)==NUMERO ) {
            	        input.consume();
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    salida = salida + " " + d.getText() + " " + e.getText();

            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_asignacion1964); 

            salida = salida + "; \n";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "asignacion"



    // $ANTLR start "definicion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:110:1: definicion returns [String salida = \"\"] : a= TIPO b= IDENT ( COMA c= IDENT )* SEPARADOR ;
    public final String definicion() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;
        Token c=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:110:40: (a= TIPO b= IDENT ( COMA c= IDENT )* SEPARADOR )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:110:42: a= TIPO b= IDENT ( COMA c= IDENT )* SEPARADOR
            {
            a=(Token)match(input,TIPO,FOLLOW_TIPO_in_definicion1978); 

            b=(Token)match(input,IDENT,FOLLOW_IDENT_in_definicion1982); 

            salida = a.getText() + " " + b.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:111:41: ( COMA c= IDENT )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==COMA) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:111:42: COMA c= IDENT
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_definicion2027); 

            	    c=(Token)match(input,IDENT,FOLLOW_IDENT_in_definicion2031); 

            	    salida = salida + ", "+c.getText();

            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_definicion2036); 

            salida = salida + "; \n";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "definicion"



    // $ANTLR start "llamada_funcion"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:113:1: llamada_funcion returns [String salida = \"\"] : a= IDENT APARENTESIS b= tipos ( COMA c= tipos )* CPARENTESIS SEPARADOR ;
    public final String llamada_funcion() throws RecognitionException {
        String salida =  "";


        Token a=null;
        String b =null;

        String c =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:113:45: (a= IDENT APARENTESIS b= tipos ( COMA c= tipos )* CPARENTESIS SEPARADOR )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:113:47: a= IDENT APARENTESIS b= tipos ( COMA c= tipos )* CPARENTESIS SEPARADOR
            {
            a=(Token)match(input,IDENT,FOLLOW_IDENT_in_llamada_funcion2050); 

            match(input,APARENTESIS,FOLLOW_APARENTESIS_in_llamada_funcion2052); 

            salida = a.getText() + "( ";

            pushFollow(FOLLOW_tipos_in_llamada_funcion2081);
            b=tipos();

            state._fsp--;


            salida = salida + b;

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:114:55: ( COMA c= tipos )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==COMA) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:114:56: COMA c= tipos
            	    {
            	    match(input,COMA,FOLLOW_COMA_in_llamada_funcion2086); 

            	    pushFollow(FOLLOW_tipos_in_llamada_funcion2090);
            	    c=tipos();

            	    state._fsp--;


            	    salida = salida + ", "+ c;

            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);


            match(input,CPARENTESIS,FOLLOW_CPARENTESIS_in_llamada_funcion2120); 

            match(input,SEPARADOR,FOLLOW_SEPARADOR_in_llamada_funcion2122); 

            salida = salida + " );";

            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "llamada_funcion"



    // $ANTLR start "identificador"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:116:1: identificador returns [String salida = \"\"] : a= IDENT ( ACORCHETE b= NUMERO CCORCHETE )? ;
    public final String identificador() throws RecognitionException {
        String salida =  "";


        Token a=null;
        Token b=null;

        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:116:43: (a= IDENT ( ACORCHETE b= NUMERO CCORCHETE )? )
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:116:45: a= IDENT ( ACORCHETE b= NUMERO CCORCHETE )?
            {
            a=(Token)match(input,IDENT,FOLLOW_IDENT_in_identificador2136); 

            salida = a.getText();

            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:117:44: ( ACORCHETE b= NUMERO CCORCHETE )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==ACORCHETE) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:117:45: ACORCHETE b= NUMERO CCORCHETE
                    {
                    match(input,ACORCHETE,FOLLOW_ACORCHETE_in_identificador2184); 

                    b=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_identificador2188); 

                    match(input,CCORCHETE,FOLLOW_CCORCHETE_in_identificador2190); 

                    salida = salida + "[" + b.getText() + "]";

                    }
                    break;

            }


            }

        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "identificador"



    // $ANTLR start "tipos"
    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:118:1: tipos returns [String salida = \"\"] : (a= identificador |b= NUMERO |c= CADENA |d= CARACTER );
    public final String tipos() throws RecognitionException {
        String salida =  "";


        Token b=null;
        Token c=null;
        Token d=null;
        String a =null;


        try {
            // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:118:35: (a= identificador |b= NUMERO |c= CADENA |d= CARACTER )
            int alt24=4;
            switch ( input.LA(1) ) {
            case IDENT:
                {
                alt24=1;
                }
                break;
            case NUMERO:
                {
                alt24=2;
                }
                break;
            case CADENA:
                {
                alt24=3;
                }
                break;
            case CARACTER:
                {
                alt24=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;

            }

            switch (alt24) {
                case 1 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:118:37: a= identificador
                    {
                    pushFollow(FOLLOW_identificador_in_tipos2206);
                    a=identificador();

                    state._fsp--;


                    salida = a;

                    }
                    break;
                case 2 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:119:39: b= NUMERO
                    {
                    b=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_tipos2251); 

                    salida = b.getText();

                    }
                    break;
                case 3 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:120:39: c= CADENA
                    {
                    c=(Token)match(input,CADENA,FOLLOW_CADENA_in_tipos2295); 

                    salida = c.getText();

                    }
                    break;
                case 4 :
                    // C:\\Users\\Jose\\workspace\\prac8\\src\\main\\java\\PL\\prac8\\modulosantlr\\CParser.g:121:38: d= CARACTER
                    {
                    d=(Token)match(input,CARACTER,FOLLOW_CARACTER_in_tipos2338); 

                    salida = d.getText();

                    }
                    break;

            }
        }
        catch (RecognitionException rre) {
          throw rre;}
         
        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "tipos"

    // Delegated rules


 

    public static final BitSet FOLLOW_funcion_in_entrada53 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entrada55 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TIPO_in_variable70 = new BitSet(new long[]{0x0000000020000100L});
    public static final BitSet FOLLOW_ASTERISCO_in_variable76 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_IDENT_in_variable124 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ACORCHETE_in_variable129 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_CCORCHETE_in_variable131 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cabecera_in_funcion191 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_body_in_funcion195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_cabecera211 = new BitSet(new long[]{0x0000001020000000L});
    public static final BitSet FOLLOW_set_in_cabecera221 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_APARENTESIS_in_cabecera263 = new BitSet(new long[]{0x0000300000000000L});
    public static final BitSet FOLLOW_llamada_variable_in_cabecera267 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_CPARENTESIS_in_cabecera269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VOID_in_llamada_variable284 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variable_in_llamada_variable292 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMA_in_llamada_variable344 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_variable_in_llamada_variable348 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_ALLAVE_in_body365 = new BitSet(new long[]{0x0000500070021000L});
    public static final BitSet FOLLOW_cuerpo_in_body372 = new BitSet(new long[]{0x0000500070021000L});
    public static final BitSet FOLLOW_CLLAVE_in_body378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sentencia_in_cuerpo398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_asignacion_in_cuerpo442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_definicion_in_cuerpo486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_llamada_funcion_in_cuerpo530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAK_in_cuerpo571 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_cuerpo573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bucle_in_sentencia595 = new BitSet(new long[]{0x0000500070001020L});
    public static final BitSet FOLLOW_condicion_in_sentencia602 = new BitSet(new long[]{0x0000500070001020L});
    public static final BitSet FOLLOW_buclefor_in_sentencia609 = new BitSet(new long[]{0x0000500070001020L});
    public static final BitSet FOLLOW_cuerposentencia_in_sentencia615 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_bucle629 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_comparacion_in_bucle635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_APARENTESIS_in_comparacion686 = new BitSet(new long[]{0x0000028020000000L});
    public static final BitSet FOLLOW_reglas_in_comparacion691 = new BitSet(new long[]{0x0000040000800040L});
    public static final BitSet FOLLOW_AND_in_comparacion739 = new BitSet(new long[]{0x0000028020000000L});
    public static final BitSet FOLLOW_OR_in_comparacion745 = new BitSet(new long[]{0x0000028020000000L});
    public static final BitSet FOLLOW_reglas_in_comparacion795 = new BitSet(new long[]{0x0000040000800040L});
    public static final BitSet FOLLOW_CPARENTESIS_in_comparacion801 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_subregla_in_reglas819 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_COMPARADORES_in_reglas823 = new BitSet(new long[]{0x0000020020000000L});
    public static final BitSet FOLLOW_subregla_in_reglas827 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_reglas876 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_IDENT_in_reglas884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cond_aritmetico_in_reglas932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_subregla986 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_subregla1032 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operacion_in_subregla1077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_cond_aritmetico1132 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_COMPARADORES_in_cond_aritmetico1136 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_NUMERO_in_cond_aritmetico1140 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_INTERROGANTE_in_cond_aritmetico1142 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_NUMERO_in_cond_aritmetico1146 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_DOSPUNTOS_in_cond_aritmetico1148 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_NUMERO_in_cond_aritmetico1152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ALLAVE_in_cuerposentencia1200 = new BitSet(new long[]{0x0000500070001000L});
    public static final BitSet FOLLOW_cuerpo_in_cuerposentencia1205 = new BitSet(new long[]{0x0000500070021000L});
    public static final BitSet FOLLOW_CLLAVE_in_cuerposentencia1209 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_cuerpo_in_cuerposentencia1216 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_operacion1275 = new BitSet(new long[]{0x0000006000000300L});
    public static final BitSet FOLLOW_set_in_operacion1324 = new BitSet(new long[]{0x0000020020000000L});
    public static final BitSet FOLLOW_set_in_operacion1377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_condicion1395 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_comparacion_in_condicion1399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_buclefor1412 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_comparacion_for_in_buclefor1416 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_APARENTESIS_in_comparacion_for1429 = new BitSet(new long[]{0x0000180020000000L});
    public static final BitSet FOLLOW_comparacion1_in_comparacion_for1482 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_comparacion_for1487 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_comparacion2_in_comparacion_for1540 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_comparacion_for1545 = new BitSet(new long[]{0x0000000020800000L});
    public static final BitSet FOLLOW_comparacion3_in_comparacion_for1598 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_CPARENTESIS_in_comparacion_for1604 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TIPO_in_comparacion11620 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_IDENT_in_comparacion11628 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_IGUAL_in_comparacion11675 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_NUMERO_in_comparacion11681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_comparacion21696 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_COMPARADORES_in_comparacion21701 = new BitSet(new long[]{0x0000020020000000L});
    public static final BitSet FOLLOW_set_in_comparacion21705 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_comparacion31767 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_MAS_in_comparacion31814 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_MAS_in_comparacion31816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_MENOS_in_comparacion31820 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_MENOS_in_comparacion31822 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_asignacion1837 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_IGUAL_in_asignacion1839 = new BitSet(new long[]{0x0000020020006000L});
    public static final BitSet FOLLOW_set_in_asignacion1843 = new BitSet(new long[]{0x0000086000000300L});
    public static final BitSet FOLLOW_set_in_asignacion1898 = new BitSet(new long[]{0x0000020020006000L});
    public static final BitSet FOLLOW_set_in_asignacion1910 = new BitSet(new long[]{0x0000086000000300L});
    public static final BitSet FOLLOW_SEPARADOR_in_asignacion1964 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TIPO_in_definicion1978 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_IDENT_in_definicion1982 = new BitSet(new long[]{0x0000080000040000L});
    public static final BitSet FOLLOW_COMA_in_definicion2027 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_IDENT_in_definicion2031 = new BitSet(new long[]{0x0000080000040000L});
    public static final BitSet FOLLOW_SEPARADOR_in_definicion2036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_llamada_funcion2050 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_APARENTESIS_in_llamada_funcion2052 = new BitSet(new long[]{0x0000020020006000L});
    public static final BitSet FOLLOW_tipos_in_llamada_funcion2081 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_COMA_in_llamada_funcion2086 = new BitSet(new long[]{0x0000020020006000L});
    public static final BitSet FOLLOW_tipos_in_llamada_funcion2090 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_CPARENTESIS_in_llamada_funcion2120 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_SEPARADOR_in_llamada_funcion2122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_identificador2136 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ACORCHETE_in_identificador2184 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_NUMERO_in_identificador2188 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_CCORCHETE_in_identificador2190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identificador_in_tipos2206 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_tipos2251 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CADENA_in_tipos2295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CARACTER_in_tipos2338 = new BitSet(new long[]{0x0000000000000002L});

}